home *** CD-ROM | disk | FTP | other *** search
- property pMyNodeNumber, pNumberOfBGPanels, pMyMovieName, pRoomNavigationSpeed, pLeftBGSprite, pRightBGSprite, pFirstBGCastMember, pLeftBGCast, pRightBGCast, pBGPanelCounter, pRoomCircumference, pScreenObjectsList, pLocHOfScreenRelativeToAbsoluteLocH, pDirection, pAmbientObjectsList, pAmbientObjectsonStageList, pCurrentQTScreenObject, pListOfNavigationScreenObjects, pFirstVisitPerLevelFlagList, pRolloverSprite, pPlayTransitionVOFlag
- global gProximityNavTimer, gFakeActorList, gCursorSprite, gEyeCursorCast, gTongueCursorCast, gCurrentMovieScreenObjectsList, gNavLeftCursor, gNavRightCursor
-
- on birth me, nodeNumber, numberOfBGPanels, movieName, playTransitionVOFlag
- set pMyNodeNumber to nodeNumber
- set pFirstBGCastMember to 16
- set pNumberOfBGPanels to numberOfBGPanels
- set pMyMovieName to movieName
- set pPlayTransitionVOFlag to playTransitionVOFlag
- set pRoomNavigationSpeed to 60
- set pLeftBGSprite to 3
- set pRightBGSprite to 4
- set pLeftBGCast to pFirstBGCastMember
- set pRightBGCast to pFirstBGCastMember + 1
- set pBGPanelCounter to 1
- set pRoomCircumference to pNumberOfBGPanels * 640
- set pScreenObjectsList to []
- set pDirection to #right
- set pAmbientObjectsList to []
- set pAmbientObjectsonStageList to []
- set pListOfNavigationScreenObjects to []
- set pLocHOfScreenRelativeToAbsoluteLocH to 0
- set pCurrentQTScreenObject to 0
- set pFirstVisitPerLevelFlagList to [0, 0, 0]
- set pRolloverSprite to 0
- return me
- end
-
- on mNavigateToLocationInRoom me, direction, positionInpixels
- if direction = #right then
- repeat while (positionInpixels - mGetLocHOfScreenRelativeToAbsoluteLocH(me)) < 0
- mRoomNavigate(me, #right)
- end repeat
- repeat while mGetLocHOfScreenRelativeToAbsoluteLocH(me) < positionInpixels
- mRoomNavigate(me, #right)
- end repeat
- else
- repeat while (mGetLocHOfScreenRelativeToAbsoluteLocH(me) - positionInpixels) < 0
- mRoomNavigate(me, #left)
- end repeat
- repeat while mGetLocHOfScreenRelativeToAbsoluteLocH(me) > positionInpixels
- mRoomNavigate(me, #left)
- end repeat
- end if
- end
-
- on mRoomNavigate me, direction
- if pNumberOfBGPanels < 2 then
- exit
- end if
- set pDirection to direction
- if pDirection = #right then
- set the locH of sprite pLeftBGSprite to the locH of sprite pLeftBGSprite - pRoomNavigationSpeed
- set the locH of sprite pRightBGSprite to the locH of sprite pRightBGSprite - pRoomNavigationSpeed
- if the locH of sprite pRightBGSprite < 320 then
- mSwitchBGCastMovingRight(me)
- end if
- else
- set the locH of sprite pRightBGSprite to the locH of sprite pRightBGSprite + pRoomNavigationSpeed
- set the locH of sprite pLeftBGSprite to the locH of sprite pLeftBGSprite + pRoomNavigationSpeed
- if the locH of sprite pLeftBGSprite > 320 then
- mSwitchBGCastMovingLeft(me)
- end if
- end if
- mScreenObjectLocationUpdater(me)
- updateStage()
- end
-
- on mSwitchBGCastMovingRight me
- if pBGPanelCounter = (pNumberOfBGPanels - 1) then
- set pBGPanelCounter to pBGPanelCounter + 1
- set the locH of sprite pLeftBGSprite to the locH of sprite pRightBGSprite
- set the locH of sprite pRightBGSprite to the locH of sprite pRightBGSprite + 640
- set the castNum of sprite pLeftBGSprite to pFirstBGCastMember + pNumberOfBGPanels - 1
- set the castNum of sprite pRightBGSprite to pFirstBGCastMember
- else
- set pBGPanelCounter to pBGPanelCounter + 1
- if pBGPanelCounter > pNumberOfBGPanels then
- set pBGPanelCounter to 1
- end if
- set the locH of sprite pLeftBGSprite to the locH of sprite pRightBGSprite
- set the locH of sprite pRightBGSprite to the locH of sprite pRightBGSprite + 640
- set the castNum of sprite pLeftBGSprite to pFirstBGCastMember + pBGPanelCounter - 1
- set the castNum of sprite pRightBGSprite to pFirstBGCastMember + pBGPanelCounter
- end if
- end
-
- on mSwitchBGCastMovingLeft me
- if pBGPanelCounter = 1 then
- set pBGPanelCounter to pNumberOfBGPanels
- set the locH of sprite pRightBGSprite to the locH of sprite pLeftBGSprite
- set the locH of sprite pLeftBGSprite to the locH of sprite pLeftBGSprite - 640
- set the castNum of sprite pRightBGSprite to pFirstBGCastMember
- set the castNum of sprite pLeftBGSprite to pFirstBGCastMember + pNumberOfBGPanels - 1
- else
- set pBGPanelCounter to pBGPanelCounter - 1
- set the locH of sprite pRightBGSprite to the locH of sprite pLeftBGSprite
- set the locH of sprite pLeftBGSprite to the locH of sprite pLeftBGSprite - 640
- set the castNum of sprite pRightBGSprite to pFirstBGCastMember + pBGPanelCounter
- set the castNum of sprite pLeftBGSprite to pFirstBGCastMember + pBGPanelCounter - 1
- end if
- end
-
- on mInitializeBGPanelPositions me
- set pBGPanelCounter to 1
- set pLocHOfScreenRelativeToAbsoluteLocH to 0
- set the castNum of sprite pLeftBGSprite to pFirstBGCastMember + pBGPanelCounter - 1
- if pBGPanelCounter = pNumberOfBGPanels then
- set the castNum of sprite pRightBGSprite to pFirstBGCastMember
- else
- set the castNum of sprite pRightBGSprite to pFirstBGCastMember + pBGPanelCounter
- end if
- end
-
- on mPlaceScreenObjectsInRoom me
- repeat with objectIndex = 1 to count(pScreenObjectsList)
- mAssumeInitialRoomPosition(getAt(pScreenObjectsList, objectIndex))
- end repeat
- end
-
- on mRemoveObjectsFromRoom me
- repeat with objectIndex = 1 to count(pScreenObjectsList)
- mGetCastOffStage(getAt(pScreenObjectsList, objectIndex))
- end repeat
- end
-
- on mScreenObjectLocationUpdater me
- if pDirection = #right then
- set pLocHOfScreenRelativeToAbsoluteLocH to pLocHOfScreenRelativeToAbsoluteLocH + pRoomNavigationSpeed
- else
- set pLocHOfScreenRelativeToAbsoluteLocH to pLocHOfScreenRelativeToAbsoluteLocH - pRoomNavigationSpeed
- end if
- mCheckScreenRelativePositionForCompleteRotation(me)
- repeat with screenObjectIndex = 1 to count(pScreenObjectsList)
- set tempScreenObject to getAt(pScreenObjectsList, screenObjectIndex)
- mUpdateScreenObjectPosition(tempScreenObject, pLocHOfScreenRelativeToAbsoluteLocH, pNumberOfBGPanels * 640)
- end repeat
- end
-
- on mCheckScreenRelativePositionForCompleteRotation me
- if pLocHOfScreenRelativeToAbsoluteLocH >= (pNumberOfBGPanels * 640) then
- set pLocHOfScreenRelativeToAbsoluteLocH to pLocHOfScreenRelativeToAbsoluteLocH - (pNumberOfBGPanels * 640)
- exit
- end if
- if pLocHOfScreenRelativeToAbsoluteLocH < 0 then
- set pLocHOfScreenRelativeToAbsoluteLocH to pLocHOfScreenRelativeToAbsoluteLocH + (pNumberOfBGPanels * 640)
- exit
- end if
- end
-
- on mNodeStepFrameController me
- checkEventListAndConditionalHandlers()
- stepFrame(me)
- repeat with index = 1 to count(gFakeActorList)
- stepFrame(getAt(gFakeActorList, index))
- end repeat
- randomizeMusicLoops()
- end
-
- on stepFrame me
- mCheckForProximityRoomNavigation(me)
- if (the mouseH > 20) and (the mouseH < 620) and (pRolloverSprite = 0) then
- cursor([gTongueCursorCast, gTongueCursorCast + 1])
- end if
- if gProximityNavTimer > the ticks then
- exit
- end if
- mControlAmbientScreenActivity(me)
- end
-
- on mControlAmbientScreenActivity me
- mUpdateListOfScreenObjectsOnStage(me)
- repeat with ambientObjectIndex = 1 to count(pAmbientObjectsonStageList)
- mCheckForAmbientAnimation(getAt(pAmbientObjectsonStageList, ambientObjectIndex))
- end repeat
- end
-
- on mUpdateListOfScreenObjectsOnStage me
- set pAmbientObjectsonStageList to []
- repeat with screenObjectIndex = 1 to count(pAmbientObjectsList)
- set tempScreenObject to getAt(pAmbientObjectsList, screenObjectIndex)
- set objectScreenPosition to the locH of sprite mGetSpriteNum(tempScreenObject)
- if (objectScreenPosition > -200) and (objectScreenPosition < 840) then
- add(pAmbientObjectsonStageList, tempScreenObject)
- end if
- end repeat
- end
-
- on mCheckForProximityRoomNavigation me
- set tempMouseH to the mouseH
- if the mouseH < 20 then
- if (pMyNodeNumber = 4) or (pMyNodeNumber = 5) or (pMyNodeNumber = 19) then
- nothing()
- else
- cursor([gNavLeftCursor, gNavLeftCursor + 1])
- end if
- set gProximityNavTimer to the ticks + 30
- mRoomNavigate(me, #left)
- exit
- end if
- if the mouseH > 620 then
- if (pMyNodeNumber = 4) or (pMyNodeNumber = 5) or (pMyNodeNumber = 19) then
- nothing()
- else
- cursor([gNavRightCursor, gNavRightCursor + 1])
- end if
- set gProximityNavTimer to the ticks + 30
- mRoomNavigate(me, #right)
- exit
- end if
- end
-
- on mCheckForExitRollover me
- if pRolloverSprite > 0 then
- if rollOver(pRolloverSprite) then
- set the locH of sprite gCursorSprite to the mouseH
- set the locV of sprite gCursorSprite to the mouseV
- exit
- else
- cursor([gTongueCursorCast, gTongueCursorCast + 1])
- set the locV of sprite gCursorSprite to -10000
- set pRolloverSprite to 0
- end if
- end if
- repeat with index = 1 to count(pListOfNavigationScreenObjects)
- set exitSprite to mGetSpriteNum(getAt(pListOfNavigationScreenObjects, index))
- if rollOver(exitSprite) then
- cursor(200)
- set the locH of sprite gCursorSprite to the mouseH
- set the locV of sprite gCursorSprite to the mouseV
- set pRolloverSprite to exitSprite
- exit repeat
- end if
- end repeat
- end
-
- on mCreateNavigationObjectsList me
- set pListOfNavigationScreenObjects to []
- repeat with objectIndex = 1 to count(pScreenObjectsList)
- if mGetScreenObjectType(getAt(pScreenObjectsList, objectIndex)) = #exit then
- add(pListOfNavigationScreenObjects, getAt(pScreenObjectsList, objectIndex))
- end if
- end repeat
- end
-
- on mUpdateTreasureListForVideoPlay me
- global gLevelOneTreasureList, gLevelTwoTreasureList
- if pMyMovieName = "06_VIDEO" then
- set numberOfAlcoveVideosSeen to getaProp(gLevelOneTreasureList, #videoPlaysInAlcove1)
- setaProp(gLevelOneTreasureList, #videoPlaysInAlcove1, numberOfAlcoveVideosSeen + 1)
- exit
- end if
- if pMyMovieName = "18_BLURM" then
- set numberOfBluesVideosSeen to getaProp(gLevelTwoTreasureList, #watchBluesVideos4)
- setaProp(gLevelTwoTreasureList, #watchBluesVideos4, numberOfBluesVideosSeen + 1)
- exit
- end if
- end
-
- on mSetScreenObjectList me, newObjectList
- set pScreenObjectsList to newObjectList
- end
-
- on mGetScreenObjectList me
- Retturn(pScreenObjectsList)
- end
-
- on mSetAmbientObjectsList me, newObjectList
- set pAmbientObjectsList to newObjectList
- end
-
- on mSetCurrentQTScreenObject me, objectNameOrZero
- set pCurrentQTScreenObject to objectNameOrZero
- end
-
- on mGetQTMovieScreenObject me
- return pCurrentQTScreenObject
- end
-
- on mGetLocHOfScreenRelativeToAbsoluteLocH me
- return pLocHOfScreenRelativeToAbsoluteLocH
- end
-
- on mGetNavigationObjectsList me
- return pListOfNavigationScreenObjects
- end
-
- on mSetFirstRoomVisitPerLevelFlag me, level
- setAt(pFirstVisitPerLevelFlagList, level, 1)
- end
-
- on mGetFirstRoomVisitPerLevelFlag me, level
- return getAt(pFirstVisitPerLevelFlagList, level)
- end
-
- on mGetNodeNumber me
- return pMyNodeNumber
- end
-
- on mGetRoomCircumference me
- return pRoomCircumference
- end
-
- on mSetFirstVisitPerLevelFlagList me, level, onOrOff
- setAt(pFirstVisitPerLevelFlagList, level, onOrOff)
- end
-
- on mGetFirstVisitPerLevelFlagList me, level
- return getAt(pFirstVisitPerLevelFlagList, level)
- end
-
- on mGetPlayTransitionVOFlag me
- return pPlayTransitionVOFlag
- end
-
- on mSetRoomNavigationSpeed me, newSpeed
- set pRoomNavigationSpeed to newSpeed
- end
-